'''
    1.投资模块相关接口的测试用例
'''
import unittest

import requests

import utils
from api.api_reg_login import RegLoginApi
from api.api_tender import TenderApi


class TestTender(unittest.TestCase):

    # 所有用例执行之前的借款标初始化
    @classmethod
    def setUpClass(cls) -> None:
        utils.init_tender_info()

    # 所有用例执行之后的借款标初始化
    @classmethod
    def tearDownClass(cls) -> None:
        utils.init_tender_info()

    def setUp(self) -> None:
        # 创建session对象
        self.session = requests.session()
        # 调用投资模块类
        self.tender_api = TenderApi(self.session)
        # 调用登录模块类
        self.reg_login_api = RegLoginApi(self.session)

    def tearDown(self) -> None:
        # 关闭session对象
        self.session.close()

    # 投资测试用例
    def test01_tender(self):
        # 登录
        self.reg_login_api.user_login()
        # 投资
        res = self.tender_api.tender(642, 200)
        # 断言
        utils.common_assert(self, res, 200, 200, "form")

    # 第三方投资测试用例
    def test02_third_tender(self):
        # 登录
        self.reg_login_api.user_login()
        # 投资
        res = self.tender_api.tender(642, 200)
        self.assertIn("form", res.text)
        # 获取第三方投资的请求数据
        # url
        url = utils.html_util(res)[0]
        # 请求体数据
        data_form = utils.html_util(res)[1]
        # 第三方投资
        res_3_tender = self.tender_api.third_tender(url, data_form)
        # 断言
        self.assertIn("OK", res_3_tender.text)

    # 我的投资列表测试用例
    def test03_user_tender_list(self):
        # 登录
        self.reg_login_api.user_login()
        # 我的投资列表接口
        res = self.tender_api.user_tender_list(1, "tender")
        # 断言
        self.assertEqual(200, res.status_code)
